#include <iostream>
using namespace std;

#include <sys/types.h>
#include <unistd.h>


//查询进程pid
// void Pid_test()
// {
//     pid_t pid = getpid(); //查询当前进程pid
//     pid_t ppid = getppid(); //查询父进程pid

//     //持续打印，让进程不要退出
//     while(1)
//     {
//         cout << pid << endl;
//         cout << ppid << endl;
//         sleep(1);
//     }
// }


//利用if() else进行分流
// void shunt_test()
// {
//     int pid = fork();//创建子进程
//     if(pid > 0) //父进程
//     {
//         while(1)
//         {
//             cout << "I am parent process,my pid is " << getpid() << endl;
//             sleep(1);
//         }
//     }
//     else //子进程
//     {
//         while(1)
//         {
//             cout << "I am child process,my pid is " << getpid() << "," << "my parent's pid is " << getppid() << endl; 
//             sleep(1);
//         }
//     }
// }


//查看进程R状态
// void R_process()
// {
//     int a = 0;
//     while(1)
//     {
//         a++;
//     }
// }

// //查看进程S状态
// void S_process()
// {
//     while(1)
//     {
//         cout << "my pid is " << getpid() << endl;
//     }
// }


// // 查看进程Z状态
// void Z_process()
// {
//     int n = fork();
//     if(n == 0)
//     {
//         //child
//         int cnt = 5;
//         while(cnt--)
//         {
//             cout << "i am child, my pid is " << getpid() << endl;
//             sleep(1);
//         }
//         exit(1); 
//     }
//     else 
//     {
//         //parent
//         while(1)
//         {
//             cout << "i am parent, my pid is " << getpid() << endl;
//             sleep(1);
//         }
//     }
// }

void orphan_process()
{
    int n = fork();
    if(n == 0)
    {
        //child
        while(1)
        {
            cout << "i am child, my pid is " << getpid() << endl;
            sleep(1);
        }
    }
    else 
    {
        //parent
        int cnt = 5;
        while(cnt--)
        {
            cout << "i am parent, my pid is " << getpid() << endl;
            sleep(1);
        }
        exit(1);
    }
}

int main()
{
    //Pid_test();
    //shunt_test();
    //R_process();
    //S_process();
    //Z_process();
    orphan_process();
    
    return 0;
}